1 /*** 2 * Copyright (c) 2003 held jointly by the individual authors. 3 * 4 * This library is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU Lesser General Public License as published 6 * by the Free Software Foundation; either version 2.1 of the License, or 7 * (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; with out even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this library; if not, write to the Free Software Foundation, 16 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 17 * 18 * > http://www.gnu.org/copyleft/lesser.html 19 * > http://www.opensource.org/licenses/lgpl-license.php 20 */ 21 package net.mlw.vlh.adapter.jdbc.util; 22 23 /*** 24 * @author Matthew L. Wilson 25 * @version $Revision: 1.2 $ $Date: 2006/04/18 17:14:19 $ 26 */ 27 public class SqlPagingSupport 28 { 29 public static final String ORACLE = "oracle"; 30 31 private String pagedQueryPreSql; 32 private String pagedQueryPostSql; 33 34 public StringBuffer getPagedQuery(String sql) 35 { 36 StringBuffer buffer = new StringBuffer(500); 37 buffer.append(pagedQueryPreSql); 38 buffer.append(sql); 39 buffer.append(pagedQueryPostSql); 40 41 return buffer; 42 } 43 44 public StringBuffer getCountQuery(String sql) 45 { 46 StringBuffer buffer = new StringBuffer(sql.length() + 100); 47 return buffer.append("SELECT count(*) FROM (").append(sql).append(")"); 48 } 49 50 public void setDatabase(String database) 51 { 52 if(ORACLE.equalsIgnoreCase(database)) 53 { 54 pagedQueryPreSql = "SELECT * FROM (SELECT INNER.*, ROWNUM as RECORDNUM FROM ("; 55 pagedQueryPostSql = ") INNER ) WRAPPED WHERE WRAPPED.RECORDNUM BETWEEN (([pagingPage]-1)*[pagingNumberPer]+1) AND (([pagingPage]-1)*[pagingNumberPer]+[pagingNumberPer])"; 56 } 57 else 58 { 59 throw new NullPointerException(database + " is not supported ("+ORACLE+")."); 60 } 61 } 62 63 public void setPagedQueryPostSql(String pagedQueryPostSql) 64 { 65 this.pagedQueryPostSql = pagedQueryPostSql; 66 } 67 public void setPagedQueryPreSql(String pagedQueryPreSql) 68 { 69 this.pagedQueryPreSql = pagedQueryPreSql; 70 } 71 }